package fr.esiag.projet17.service.utilisateur;

import java.io.ByteArrayInputStream;

import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.stream.XMLStreamException;

import fr.esiag.projet17.persistence.entity.Utilisateur;
import fr.esiag.projet17.service.Wrapper;
import fr.esiag.projet17.services.transfert.CredentialsElement;
import fr.esiag.projet17.services.transfert.KeyElement;
import fr.esiag.projet17.services.transfert.UtilisateurElement;

public class UtilisateurWrapper extends Wrapper<Utilisateur,UtilisateurElement> {

	@Override
	public byte[] toBytes(Utilisateur utilisateur)
			throws XMLStreamException, JAXBException {
		byte[] xmlStream = null;
		UtilisateurElement userExchange = getObjectFactory().createUtilisateurElement();

		userExchange.setId(utilisateur.getId());
		userExchange.setNom(utilisateur.getName());
		userExchange.setPrenom(utilisateur.getSurname());
		userExchange.setLogin(utilisateur.getLogin());
		userExchange.setMotdepasse(utilisateur.getPassword());

		xmlStream = super.marshall(userExchange);
		return xmlStream;
	}

	@Override
	public Utilisateur toElement(byte[] representation) throws JAXBException {
		JAXBElement<UtilisateurElement> element = super.unmarshall(representation);
		UtilisateurElement userExchange = element.getValue();
		Utilisateur user = new Utilisateur();
		
		return user;
	}
	
	public CredentialsElement getCredentialsElement(byte[] representation) throws JAXBException {
		ByteArrayInputStream input = new ByteArrayInputStream(representation);
		CredentialsElement element = (CredentialsElement)super.unmarshaller.unmarshal(input);
		return element;
	}
	
	public byte[] getCredentialsRepresentation(String login, String password) throws JAXBException, XMLStreamException {
		CredentialsElement credentials= new CredentialsElement();
		credentials.setLogin(login);
		credentials.setPassword(password);
		return marshall(credentials);
	}
	
}
